import sys
import os
import json
import urllib.request
from pprint import pprint
import datetime
from datetime import timedelta
import mysql.connector
import csv
import codecs

import MyLogger
import MyLib

#Déclaration
arguments = dict() #dict
i = 0 #Int
config_json = {} #Json

#####################################################################
#Les definitions

#Déclaration
resultat = dict() #dict
resultats = dict() #dict

#Procedure Mise à jour
def decode() :
    try:
        MyLogger.logger.info ("Traduction du fichier : "+config_json["parameters"]["fichierCI"])
        json_ci=open(config_json["parameters"]["fichierCI"])
        ci = json.load(json_ci)

        MyLogger.logger.info ("Traduction du fichier : "+config_json["parameters"]["fichierData"])
        f = open(config_json["parameters"]["fichierData"],'r')
        lignes  = f.readlines()
        f.close()

        i = 1;
        for ligne in lignes :
            resultat = dict()
            if ligne[0:2] == "32" :
                MyLogger.logger.debug ("Ligne avec message 32.")
                for attribut in ci["32"] :
                    obligatoire = ci["32"][attribut]["obligatoire"]
                    position = ci["32"][attribut]["position"]
                    longueur = ci["32"][attribut]["longueur"]
                    valeur = ligne[position:position+longueur];
                    resultat[attribut] = valeur
                resultats[len(resultats)] = resultat

        json_resultats = json.dumps(resultats)

        now = datetime.datetime.now()
        dateTime = now.strftime("%y%m%d_%H%M")
        fichier_sortie = "resultats_"+dateTime+".json"
        MyLogger.logger.info ("Ecriture du fichier de sortie : "+fichier_sortie)
        
        with open(config_json["parameters"]["emplacementResultats"]+fichier_sortie, "w") as outfile:
            outfile.write(json_resultats)
        outfile.close()

                
    except ValueError as exc:
        MyLogger.logger.error("Erreur pendant l'edition (Voir le fichier de config)")
        sys.exit("Erreur")

#Procedure Say More
def more() :
    MyLogger.logger.info("Les options disponible sont : 'decode'.")
    MyLogger.logger.info("Exemple de syntax pour 'decode' : 'python decodeTrame.py decode'.")
    MyLogger.logger.info("Exemple de syntax pour 'more' : 'python decodeTrame.py more'.")
    
#####################################################################
#Le programme

#Message de bienvenu.
MyLogger.logger.info ("Bienvenue dans le script de traitement des messages.")

#Récupération des arguments.
for x in sys.argv :
    i += 1
    if i == 2 :
        arguments["jsonFile"] = x
    elif i == 3 :
        arguments["action"] = x
        if x not in ["decode","more"] :
            MyLogger.logger.warning("Votre premier argument ("+x+") est incorrect, seul 'more','decode' sont aurorisés.")
            sys.exit("Erreur")
        else :
            MyLogger.logger.info("Mode d'action choisi : "+x+".")
            arguments["action"] = x
            
    if len(arguments) == 0 :
        arguments["action"] = "more"
        
#Initialisation
config_json = MyLib.charger_config(arguments["jsonFile"]) 

#Affichage
if arguments["action"] == "decode" :
    decode()
elif arguments["action"] == "more" :
    more()

#Message de fin.
MyLogger.logger.info ("Fin du script.")
sys.exit(0)

    
